The present invention generally relates to the field of computers, and particularly to providing sufficient memory for option ROM expansion.
The personal computer system is usually booted during a power up sequence using system software and information stored within a system read-only-memory (ROM). Since the system ROM is non-volatile, the ROM contains reliable data or instructions to boot up the system at least to a point where the disk operating system (DOS) can be loaded to complete the boot-up sequence. The Basic I/O System (BIOS) is a set of routines that works closely with the hardware to support the transfer of information between elements of the system, such as memory, disks, and the monitor. The system ROM stores the operating system program, such as BIOS, which is executed upon power-up by the microprocessor to initialize the system, as well as to perform a power-on self-test (POST) and to provide certain low level, hardware dependent support for the display, disk drives, and peripheral devices. More sophisticated routines and data may be included in the system ROM, depending upon the needs and complexity of a given computer system. BIOS code provides the lowest level of interface between the operating system and the hardware. On a system reset or power-on, the typical system retrieves the boot up instructions and data from the 1 megabyte or other size memory where they are stored. Further, a checksum routine is typically executed to verify the status of the BIOS currently available to the system. If the integrity of the BIOS is determined to be good, the boot code initializes the system and its peripherals and passes control to the operating system.
Peripheral Component Interconnect (PCI) is a high-performance, 32-bit or 64-bit bus designed to be used with devices that have high bandwidth requirements, such as display subsystems. Small Computer Standard Interface (SCSI) is an I/O bus designed as a method for connecting several classes of peripherals to a host system without requiring modifications to generic hardware and software. The Configuration Manager is a system component that drives the process of locating devices, setting up their nodes in the hardware tree, and running the resource allocation process. Each of the modes of configuration management (real mode, virtual mode, and protected mode) have their own configuration managers.
The option ROM is a real mode driver designed to manage the resources of some piece(s) of hardware. Its normal operating environment will not allow the code to exceed 64 K, nor will it permit access to code larger than 64 K even if it exists. The environment normally available to an option ROM in a personal computer (PC) is constricted by many legacy requirements. An example of those limits are the 1 megabyte X86 processor Real Mode memory limit, the space allocated for an option ROM runtime images which is usually 128K for all images. Other legacy devices lack universal memory manipulation routines for reserving and using memory and do not comply with the general requirement that unused memory be released as soon as possible.
Because of these restrictions, adding features and meeting industry standard requirements has become almost impossible. Option ROMs are limited to 64 K in size, the nominal maximum, and cannot grow and still operate in all but a few PCs.
There are various other problems involving the limited memory of option ROMs. The initialization time memory generally allocated for option ROM expansion is limited. The run time memory generally allocated for an option ROM is limited. The system expansion location for option ROMs is privileged information, not generally available to the option ROM. The initialization time memory allocation is not universally available on PC platforms. A nominal 64 K limit on option ROMs limits the addition of functionality and features. RAID recognition is a feature which requires access to normally unavailable memory. Simple Boot Support is a feature that requires access to normally unavailable memory.
Therefore, it would be desirable to provide an expanded memory capability for option ROMs.
Accordingly, the present invention is directed to a method and apparatus for expanding option ROM memory capabilities by using PCI function calls that allow function calls and 32 bit addressing of the FLASH option ROM and an associated FLASH memory.
In a first aspect of the present invention, a method for accessing, via the commands of an adapter, from a read/limited write memory having a first size, a memory area having a second size greater in size than the first size, includes the steps of preparing a load image for transfer to the read/limited write memory, making a determination of the size of the load image, initializing the read/limited write memory to enable addressing of the memory area, and making function calls to enable a configuration space for the adapter.
In a second aspect of the invention, a computer system is disclosed which has an adapter which provides control signals and data to other devices, a read/limited write memory having a first size and being coupled to the adapter to effect data transfers, and a main memory having a second size that is greater than the first size and being used to store an overflow image in a data transfer to the read/limited write memory when the load image to be transferred to the read/limited write memory has a size which exceeds the first size.
In a third aspect of the invention, a computer system which presumes a first size for a FLASH option ROM has an adapter having system BIOS and a non-volatile memory having a second size. The second size is greater than the first size. The system BIOS initiates loading into the non-volatile memory. PCI function calls are made to enable configuration space for the adapter in Big Real Mode.
In a fourth aspect of the invention, a method for using a non-volatile memory as an expanded option ROM includes the steps of using a system BIOS to enter Big Real Mode and making function calls to enable configuration space for an adapter on which the system BIOS resides.
In a fifth aspect of the invention, a method for switching operational modes for transferring data to and from an non-volatile memory the steps of a system BIOS being placed in a first operational mode and initiating process code, separate from the system BIOS and responsive to processing by the system BIOS, that ensures the system BIOS enters a second operational mode or prevents the system BIOS from leaving the second operational mode, in which the second operational mode supports a larger address space than the first operational mode.
The present invention combines various abilities such as placing the system in Big Real Mode if it is not already in that mode, locating the adapters PCI configuration registers, enable/re-enable the FLASH ROM memory on the adapter in a readable free memory space, validating the FLASH ROM memory, copying all or a portion of the FLASH ROM into main memory (below 1 MB), disabling/reverting the FLASH ROM memory to a known state, quitting Big Real Mode if it was started by the process of the present invention, and then using the code/data that was copied from the FLASH ROM to extend/enhance the capabilities of the normal load image and run time binary.
Using an undocumented series of X86 processor instructions that are supported across the X386 and beyond processors, including AMD and Transmeta, an environment is created for the initialization time option ROM that allows access to 4 Gigabytes of linear memory. Using that mechanism, and documented PCI entry points and function calls, the PCI configuration registers for the PCI adapter that the option ROM is booted from are located. The FLASH option ROM image is accessed in its raw form. By this method, the entire option ROM image is accessed, and not just the first 64 K or less that the PC system BIOS would ordinarily use.
The present invention gains access to the FLASH image of the option ROM.
The present invention provides a way to make use of more code and data in an option ROM.
It is to be understood that both the forgoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention as claimed. The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate an embodiment of the invention and together with the general description, serve to explain the principles of the invention.